HTMLify

script.js
Views: 40 | Author: cody
/*
    @ cm = computer player
    @ us = User Player
    @ Cannon =  can
*/
let userCanX = 185; 
let userCanY = 0; 
let fireTime = 13000;
let countdown = (fireTime /1000)-3;
let hitAudio = new Audio('http://soundbible.com/mp3/Sniper_Rifle-Kibblesbob-2053709564.mp3');
let fireAudio = new Audio('http://soundbible.com/mp3/Super%20Punch%20MMA-SoundBible.com-1869306362.mp3');

// counter 
setInterval( ()=> {
  countdown = countdown > 0? countdown : 0;
  $('.countdown').text(countdown-- );
},1000)



setInterval( ()=> {
  let cmCanPipe = $('.cm .pipe');
  let allPipe = $('.pipe');
  let cmCan = $('.cannon.cm');
  let canBall = $('.ball');
  let cmCanAngle =  Math.floor(Math.random() * 45);
  let cmCanX =  Math.floor(Math.random() * 8) + 2 ; // 2 to 10
  let ballMileage =   (cmCanX + 4.23) / Math.cos((cmCanAngle * (Math.PI/180) ));
  countdown = (fireTime /1000)-3;
  // Set computer Cannon pipe Angle
  cmCanPipe.css({
    transform: 'rotate(' + cmCanAngle + 'deg)'
  });
  // Set computer Cannon Position
  cmCan.css({
    transform: 'translateX(' + cmCanX + 'cm)'
  });
  // computer Cannon wheel rotation on move
  $('.cm .wheel').css({
    transform: 'rotate(' + ( cmCanX ) + 'deg)'
  })
  
  
  $('.level-monitor').text(cmCanAngle);
  //   Reset Values
  canBall.css('left' , 0);
  allPipe.removeClass('fire');
  $('.game-container').removeClass('defended');
  $('.level').width((ballMileage  ) + 'cm' )
  
  // Fire on  timeout  
  setTimeout( ()=> {
    let comCanX =  cmCanX * 37.79; // convert cm to px
    let validX = (userCanX - 5) <= comCanX && (userCanX + 5) >= comCanX ? true : false;
    let validAngle = (userCanY - 2) <= cmCanAngle && (userCanY + 2) >= cmCanAngle ? true : false;
    fireAudio.play(); // sound effect for fire
    allPipe.addClass('fire'); // Cannon pipe Animation
    
    // Check User Cannon and Computer cannon are same postion and angle
    if( validAngle && validX ){  
      $('.game-container').addClass('defended');
      canBall.animate({
         left :  (-ballMileage + 4.23) + 'cm',
       },500 , ()=> {
        hitAudio.play(); // sound effect for hit
        });
    } else{
      canBall.animate({
          left : '-100vw',
      },1000)
    };
  }, (fireTime - 2000));
}, fireTime );

// User Cannon Move X
$('.wheel-handle').mousedown((e)=>{
  const clickX = e.pageX;
  let canX  = 0;
  $(this).mousemove((e)=>{
    let canDX = ( e.pageX - clickX ) + userCanX;    
    canX  = canDX < 375 &&  canDX > 35 ? canDX : canX;

      $('.user-col .cannon').css({
        transform: 'translateX(' + ( canX ) + 'px)'
      })      
      $('.user-col .wheel').css({
        transform: 'rotate(' + ( canX ) + 'deg)'
      })
  })
  
  // Remove
  $(this).mouseup(()=>{
      $(this).unbind("mousemove");
      userCanX = canX;
  });
  
});


// Set User Cannon pipe Angle 
$('.level-handle').mousedown((e)=>{
  const clickY = e.pageY;
  let canY  = 0;
  $(this).mousemove((e)=>{
    let canDY = ( e.pageY - clickY ) + userCanY;    
     canY  = canDY < 65 && canDY > -5 ? canDY : canY;
    
      $('.level-handle').text(canY);
    
      $('.user-col .pipe').css({
        transform: 'rotate(' + ( canY ) + 'deg)'
      })      
  });
  
  // Remove
  $(this).mouseup(()=>{
      $(this).unbind("mousemove");
      userCanY = canY;
  });
  
})


// Remove All mousemove events
$(document).mouseup(()=>{
   $(this).unbind("mousemove")
});

Comments